package sdk.webview.fmc.com.fmcsdk.util;

import android.content.Context;
import android.preference.PreferenceManager;

public
class PasswordUtils {

    public static boolean isModfiyPassword(Context context){
        String passwordStr = UserHelper.getSavedUser().getRecord().getPassword();
        String psdLevel = PreferenceManager.getDefaultSharedPreferences(context).getString(Constant.PSD_LEVEL, "0");
        if (psdLevel.equals("0")){
            return true;
        }else if (psdLevel.equals("1")){
            //满足要求
            if (isContainAll(passwordStr)){
                return true;
            }
            //满足要求
            if (isContainAllChar(passwordStr)){
                return true;
            }
        }else if (psdLevel.equals("2")){
            //满足要求
            if (isContainAllChar(passwordStr)){
                return true;
            }
        }

        return false;
    }

    public static boolean isContainAll(String str) {
        boolean hasUpperCase = str.matches(".*[A-Z].*");
        // 检查是否包含至少一个小写字母
        boolean hasLowerCase = str.matches(".*[a-z].*");
        // 检查是否包含至少一个数字
        boolean hasDigit = str.matches(".*\\d.*");

        // 密码必须同时满足以上三个条件
        return hasUpperCase && hasLowerCase && hasDigit;
    }



    public static boolean isContainAllChar(String str) {
        boolean isDigit = false;//定义一个boolean值，用来表示是否包含数字
        boolean isLowerCase = false;//定义一个boolean值，用来表示是否包含字母
        boolean isUpperCase = false;
        for (int i = 0; i < str.length(); i++) {
            if (Character.isDigit(str.charAt(i))) {   //用char包装类中的判断数字的方法判断每一个字符
                isDigit = true;
            } else if (Character.isLowerCase(str.charAt(i))) {  //用char包装类中的判断字母的方法判断每一个字符
                isLowerCase = true;
            } else if (Character.isUpperCase(str.charAt(i))) {
                isUpperCase = true;
            }
        }
        String regex = "^(?![A-z0-9]+$)(?=.[^%&',;=?$\\x22])(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{8,20}$";
        boolean isRight = isDigit && isLowerCase && isUpperCase && str.matches(regex);
        return isRight;
    }


}
